/**
 * 状态枚举定义文件
 * 提供系统中各种状态码对应的显示名称
 */
const statusMaps: Record<string, Record<string | number, string>> = {
  // 项目状态
  projectStatus: {
    '01': '立项中',
    '02': '立项成功',
    '03': '招投标中',
    '04': '招投标成功',
    '05': '签约中',
    '06': '签约成功',
    '07': '实施中',
    '08': '实施完成',
    '09': '结算中',
    '10': '已完结',
  },
  // 发票类型
  invoiceType: {
    1: '普通发票',
    2: '电子发票',
    3: '普通发票+电子发票',
  },
  // 资金类型
  fundsType: {
    1: '应收',
    2: '应付',
    3: '定金',
    4: '保证金',
  },

  // 结算类型
  settlementType: {
    1: '委托单位往来账',
    2: '承运单位往来账',
    3: '项目往来账',
    4: '合同往来账',
    5: '其他',
    6: '单位往来账',
  },

  // 账单类型
  billType: {
    1: '收入',
    2: '支出',
  },

  // 账单类型
  isFullWriteOff: {
    0: '否',
    1: '是',
  },

  // 支付状态
  isPay: {
    '0': '未结清',
    '1': '已结清',
    '-1': '无需支付',
    '2': '结算中',
    '3': '部分结清',
    '4': '全额核销',
  },

  // 退款状态
  isRefund: {
    0: '未退款',
    1: '退款中',
    2: '已退款',
    3: '部分退款',
  },

  // 付款人类型
  payerType: {
    0: '个人',
    1: '单位',
  },

  // 客户类型
  customerType: {
    1: '承运商',
    2: '货主',
  },

  // 开票状态
  isInvoice: {
    0: '未开票',
    1: '已开票',
    2: '申请中',
    3: '部分开票',
    4: '手动票齐',
    5: '无需开票',
  },

  // 审批状态
  approvalStatus: {
    0: '未提交',
    1: '待审批',
    2: '审批中',
    3: '已通过',
    4: '已驳回',
    5: '已撤回',
  },

  // 项目核定类型
  projectCompleteType: {
    1: '时间周期',
    2: '计量',
  },

  // 项目周期类型
  projectCycle: {
    1: '天',
    2: '周',
    3: '月',
    4: '季',
    5: '年',
  },

  // 结算周期类型
  settlementCycle: {
    1: '天',
    2: '周',
    3: '月',
    4: '季',
    5: '年',
  },

  // 流程状态
  flowStatus: {
    PENDING: '待处理',
    APPROVING: '审批中',
    APPROVED: '已通过',
    REJECTED: '已拒绝',
    CANCELLED: '已撤销',
    COMPLETED: '已完成',
    TERMINATED: '已终止',
  },

  // 文件类型
  fileType: {
    pdf: 'PDF文档',
    doc: 'Word文档',
    docx: 'Word文档',
    xls: 'Excel表格',
    xlsx: 'Excel表格',
    ppt: 'PowerPoint',
    pptx: 'PowerPoint',
    txt: '文本文件',
    jpg: '图片',
    jpeg: '图片',
    png: '图片',
    gif: '图片',
    bmp: '图片',
  },

  // 性别
  gender: {
    1: '男',
    2: '女',
    0: '未知',
  },

  // 是/否
  yesNo: {
    1: '是',
    0: '否',
    true: '是',
    false: '否',
  },

  // 预支申请审批状态
  advanceApprovalStatus: {
    0: '未提交',
    1: '待处理',
    2: '审批中',
    3: '已通过',
    4: '已驳回',
    5: '已撤回',
  },

}
/**
 * 获取状态显示名称
 * @param type 状态类型
 * @param value 状态值
 * @returns 显示名称，如果未找到则返回原值
 */
export function getStatusName(type: string, value: string | number | null | undefined): string | undefined {
  if (!value && value !== 0) {
    return undefined
  }

  const statusMap = statusMaps[type]
  if (!statusMap) {
    console.warn(`未找到状态类型 "${type}" 的映射配置`)
    return String(value)
  }

  const displayName = statusMap[value]
  return displayName || String(value)
}
